#ifndef AST_EXPRESSION_ARGUMENT_EXPR_LIST_H
#define AST_EXPRESSION_ARGUMENT_EXPR_LIST_H

#include "../ASTNode.h"

class AssignmentExpr;

/*
C99 6.5.2
argument-expression-list:
		assignment-expression
		argument-expression-list  ,  assignment-expression
*/
class ArgumentExprList : public ASTNode
{
protected:
	ArgumentExprList()
		: ASTNode(ASTNode::argument_expression_list){};
public:
	ArgumentExprList(AssignmentExpr * pAssignmentExpr)
		: ASTNode(ASTNode::argument_expression_list)
		, m_pAssignmentExpr(pAssignmentExpr)
		, m_pArgumentList(NULL){};
	ArgumentExprList(ArgumentExprList *pArgList, AssignmentExpr * pAssignmentExpr)
		: ASTNode(ASTNode::argument_expression_list)
		, m_pArgumentList(pArgList)
		, m_pAssignmentExpr(pAssignmentExpr){};


	virtual ~ArgumentExprList(void);


	virtual	void			codeGen();
protected:
	AssignmentExpr *			m_pAssignmentExpr;
	ArgumentExprList *			m_pArgumentList;
};


#endif

